package com.wjm.api.ExceptionPackage;

import java.util.Scanner;

/**
 * Data:2022年07月14日
 * Author:wjm
 * Content: 自定义异常类
 *
 *
 *  自定义异常类的步骤
 *           1）继承一个异常类Exception或者RuntimeException
 *                       RuntimeException是非编译异常，也就是运行时异常，一般是指我们的业务逻辑错误异常
 *           2）编写构造方法
 *                       通过idea自动生成相应的构造方法
 *                       1.声明一个类并继承Exception或者RuntimeException
 *                       2.点击source、code
 *                       3.选择Generate Constructors from Superclass
 *                       4.选中父类中的所有构造方法后确认生成
 *
 *  自定义异常类的目的
 *            如果抛出的异常都是代码的话，对用户很不友好，而且有安全问题，所以自定义异常类可以指定抛出的内容
 *
 */
public class MyException extends RuntimeException{
    public MyException() {
    }

    public MyException(String message) {
        super(message);
    }

    public MyException(String message, Throwable cause) {
        super(message, cause);
    }

    public MyException(Throwable cause) {
        super(cause);
    }

    public MyException(String message, Throwable cause, boolean enableSuppression, boolean writableStackTrace) {
        super(message, cause, enableSuppression, writableStackTrace);
    }
}

/**
 *
 * 这是一个测试类
 *    给定方形面积求和宽求高
 */
class Test{
    static int height;

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入方形面积");
        int area = scanner.nextInt();
        System.out.println("请输入宽");
        int weight = scanner.nextInt();

        //传统方法来做输出的宽不能为0 ，一直是在控制台上的用户是看不见的
        /*
        * weight是被除数不能为0，不然会报错
        * 使用传统方法来做
        *
        *
        *  if（weight ！= 0）{
        *     height = area/weight；
        *     System.out.println("高"+height);
        * }else{
        *     System.out.println("宽不能为零");
        * }
        *
        * */


        //使用自定义异常的方式
        //这个输出的宽不能为0 是可以给用户看见的，而上面的只是输出在控制台只能程序员看见20
        try {
            height = area/weight;
            System.out.println("高为"+height);
        }catch (Exception e){
            throw new MyException("宽不能为0");
        }


    }
}